package com.gxc.matrix;

/**
 * 3033. 修改矩阵
 * 给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix ，
 * 新建一个下标从 0 开始、名为 answer 的矩阵。使 answer 与 matrix 相等，
 * 接着将其中每个值为 -1 的元素替换为所在列的 最大 元素。
 *
 * 返回矩阵 answer
 */
public class ModifiedMatrix {

    public static void main(String[] args) {

    }

    /**
     * 使用列遍历，先扫一遍找到每一列的最大值，再扫一遍把 −1 替换成这一列的最大值即可
     * @param matrix
     * @return
     */
    public static int[][] handle(int[][] matrix) {
        int n = matrix[0].length;
        int[][] answer = new int[matrix.length][matrix[0].length];


        for (int i = 0; i < n; i++) {
            //计算本列最大值
            int max = -1;
            for (int j = 0; j < matrix.length; j++) {
                if (matrix[j][i]>max) max = matrix[j][i];
            }
            //列中-1替换为最大值
            for (int j = 0; j < matrix.length; j++) {
                if (matrix[j][i] == -1)  answer[j][i]= max;
                else {
                    answer[j][i]= matrix[j][i];
                }
            }
        }
        return answer;
    }
}

